package org.elsfs.cloud.common.mybatis.ext.sql.support.common;


import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import org.elsfs.cloud.common.core.entity.BaseEntity;
import org.elsfs.cloud.common.mybatis.ext.sql.TableAliasManager;
import org.elsfs.cloud.common.util.lang.StringUtils;

/**
 * 字段枚举解析支持类
 *

 */
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public final class FieldEnumResolverSupport {

    /**
     * 解析字段枚举名称
     *
     * @param tableAliasManager 表别名管理器
     * @param field 字段枚举
     * @return 字段名称
     */
    public static String resolveFieldName(TableAliasManager tableAliasManager, Enum<?> field) {
        Class<?> enclosingClass = field.getClass().getEnclosingClass();
        if (enclosingClass != null && BaseEntity.class.isAssignableFrom(enclosingClass)) {
            String tableAlias = tableAliasManager.fetchTableAlias(enclosingClass);
            if (StringUtils.isNotBlank(tableAlias)) {
                return tableAlias + "." + field.name();
            }
        }

        return field.name();
    }
}
